package ms.maplestory.boot.enums;

import java.util.Arrays;

/**
 * 技能属性类型
 */
public enum SkillStatType {

    x,
    y,
    z,
    q,
    s,
    u,
    w,
    attackCount,
    rb,
    damage,
    lt,
    mpCon,
    mobCount,
    damAbsorbShieldR,
    pddX,
    mhpR,
    psdJump,
    speedMax,
    stanceProp,
    psdSpeed,
    lv2mhp,
    forceCon,
    cooltime,
    indieAsrR,
    indiePad,
    indieMad,
    indiePdd,
    indieMdd,
    indieTerR,
    indieEva,
    indieAcc,
    indieBooster,
    indieSpeed,
    indieJump,
    range,
    time,
    cooltimeMS,
    subTime,
    strX,
    padX,
    bdR,
    damR,
    ignoreMobpdpR,
    mobCountDamR,
    actionSpeed,
    mastery,
    rb2,
    lt2,
    v,
    terR,
    mddX,
    asrR,
    MDF,
    cr,
    prop,
    ballCount,
    t,
    dotInterval,
    dotTime,
    criticaldamageMin,
    criticaldamageMax,
    dot,
    ballDelay,
    ballDelay1,
    pdR,
    dexX,
    mmpR,
    madR,
    lukX,
    intX,
    hcProp,
    hcCooltime,
    hcTime,
    subProp,
    mp,
    hcHp,
    hp,
    indieCr,
    indieDamR,
    mhpX,
    targetPlus,
    indieMaxDamageOverR,
    indieMaxDamageOver,
    damPlus,
    ar,
    madX,
    selfDestruction,
    pddR,
    mddR,
    speed,
    evaX,
    accX,
    onActive,
    jump,
    summonCount,
    acc,
    eva,
    epdd,
    emdd,
    indieMmp,
    indieMhp,
    pdd,
    mdd,
    bulletCount,
    mdd2pdd,
    lv2mmp,
    indiePddR,
    epad,
    attackDelay,
    mdR,
    hcSubTime,
    mad,
    damageToBoss,
    coolTimeR,
    w2,
    u2,
    s2,
    q2,
    v2,
    mesoR,
    dropR,
    expR,
    indieExp,
    indiePadR,
    indieMadR,
    hcSummonHp,
    er,
    indieMhpR,
    indieBDR,
    ppRecovery,
    ballDelay0,
    ballDelay2,
    bulletConsume,
    ignoreMobDamR,
    indieStance,
    dotSuperpos,
    dotTickDamR,
    ppCon,
    ppReq,
    indiePMdR,
    bufftimeR,
    rb3,
    rb4,
    lt3,
    lt4,
    hpCon,
    areaDotCount,
    hcSubProp,
    costmpR,
    MDamageOver,
    variableRect, // null val
    attackPoint, // null val
    property, // null val
    emad,
    ballDelay3,
    emhp,
    mpConReduce,
    indieMmpR,
    indieIgnoreMobpdpR,
    gauge,
    fixdamage,
    hpRCon,
    padR,
    hcReflect,
    reduceForceR,
    timeRemainEffect,
    dex,
    killRecoveryR,
    accR,
    emmp,
    powerCon,
    mmpX,
    epCon,
    kp,
    a,
    ignoreCounter,
    action,
    evaR,
    damageTW3,
    damageTW2,
    damageTW4,
    pad,
    indieAllStat,
    bulletSpeed,
    morph,
    itemConsume,
    nbdR,
    psdIncMaxDam,
    strFX,
    dexFX,
    lukFX,
    intFX,
    pdd2mdd,
    acc2mp,
    eva2hp,
    str2dex,
    dex2str,
    int2luk,
    luk2int,
    luk2dex,
    dex2luk,
    lv2pad,
    lv2mad,
    tdR,
    minionDeathProp,
    abnormalDamR,
    acc2dam,
    pdd2dam,
    mdd2dam,
    pdd2mdx,
    mdd2pdx,
    nocoolProp,
    passivePlus,
    mpConEff,
    lv2damX,
    summonTimeR,
    expLossReduceR,
    onHitHpRecoveryR,
    onHitMpRecoveryR,
    pdr,
    mhp2damX,
    mmp2damX,
    finalAttackDamR,
    guardProp,
    mob, // null val
    extendPrice,
    priceUnit,
    period,
    price,
    reqGuildLevel,
    mileage,
    disCountR,
    pqPointR,
    mesoG,
    itemUpgradeBonusR,
    itemCursedProtectR,
    itemTUCProtectR,
    igpCon,
    gpCon,
    iceGageCon,
    PVPdamage,
    lv2str,
    lv2dex,
    lv2int,
    lv2luk,
    orbCount,
    dotHealHPPerSecondR,
    ballDelay6,
    ballDelay7,
    ballDelay4,
    ballDelay5,
    ballDamage,
    ballAttackCount,
    ballMobCount,
    delay,
    strR,
    dexR,
    intR,
    lukR,
    OnActive,
    PVPdamageX,
    indieMDF,
    soulmpCon,
    prob,
    indieMddR,
    indieDrainHP,
    trembling,
    incMobRateDummy,
    fixCoolTime,
    indieForceSpeed,
    indieForceJump,
    itemCon,
    itemConNo,
    dateExpire;

    public static SkillStatType getSkillStatByString(String name) {
        return Arrays.stream(values()).filter(ss ->
                ss.toString().equalsIgnoreCase(name.toLowerCase())).
                findFirst().
                orElse(null);
    }
}
